package com.bling.iservice;

import java.io.Serializable;
import java.sql.SQLException;

import com.bling.common.bean.Kind;
import com.bling.common.page.PageResult;
/**
 * 分类服务接口
 * @author BLingSoft
 *
 */
public interface IKindService {
	/**
	 * 增加分类
	 * @param kind
	 * @throws SQLException
	 */
	public void saveKind(Kind kind) throws SQLException;
	/**
	 * 更新分类
	 * @param kind
	 * @throws SQLException
	 */
	public void updateKind(Kind kind) throws SQLException;
	/**
	 * 更新分类排序
	 * @param id
	 * @param sort
	 * @throws SQLException
	 */
	public void updateKindSort(Serializable id,Integer sort) throws SQLException;
	/**
	 * <pre>
	 * 根据主键id删除分类:注意同时删除分类下所有信息
	 * 1. 如果是上级分类，则需要删除下级分类
	 * 2. 删除该关联分类下所有信息
	 * 3. 删除分类关联表单
	 * 通常一般情况下是不建议直接删除某个分类，分类创建之后一般不建议删除
	 * <pre>
	 * @param id
	 * @throws SQLException
	 */
	public void deleteKindById(Serializable id) throws SQLException;
	/**
	 * 删除分类对象，说明参见{@link #deleteKindById(Serializable)}}
	 * @param kind
	 * @throws SQLException
	 */
	public void deleteKind(Kind kind) throws SQLException;
	/**
	 * 根据主键id查找某个分类
	 * @param id
	 * @return
	 * @throws SQLException
	 */
	public Kind findKindById(Serializable id) throws SQLException;
	/**
	 * 加载全部分类，该类一般是在系统启动需要将数据放入cache中的时候调用
	 * @return
	 * @throws SQLException
	 */
	public PageResult<Kind> listKindAll() throws SQLException;
	/**
	 * 分页展示分类信息
	 * @param from
	 * @param num
	 * @return
	 * @throws SQLException
	 */
	public PageResult<Kind> listKindByPage(int from,int num) throws SQLException;
	/**
	 * 分页查询某下级分类
	 * @param pid
	 * @param from
	 * @param num
	 * @return
	 * @throws SQLException
	 */
	public PageResult<Kind> listKindPageByPid(Serializable pid,int from,int num) throws SQLException;
	/**
	 * 查询某分类下全部子分类
	 * @param pid
	 * @return
	 * @throws SQLException
	 */
	public PageResult<Kind> listKindAllByPid(Serializable pid) throws SQLException;
	/**
	 * 索引分类
	 * @param keyword
	 * @param from
	 * @param num
	 * @return
	 * @throws SQLException
	 */
	public PageResult<Kind> searchKind(String keyword,int from,int num) throws SQLException;
	
}
